package com.irdstudio.efp.esb.api.rest.yed.req;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.irdstudio.basic.framework.core.annotation.BeanMapKey;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.annotation.NumType;
import com.irdstudio.basic.framework.core.constant.SDicCertTypeEnum;
import com.irdstudio.basic.framework.core.constant.SDicChannelType;
import com.irdstudio.efp.esb.api.common.sed.SedEnum;
import com.irdstudio.efp.esb.api.common.sed.SetlType;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.lang.NonNull;

import javax.validation.Valid;
import javax.validation.constraints.Digits;

/**
 * 需求编号：【2019D0509】（业务提的需求编号）
 * 问题编号：【】（若不是因为修复问题而新增该类，则留空）
 * 开发人员：【wanglh4】
 * 创建日期：【2020/7/27 16:52】
 * 功能描述：
 */
public class ReqActiRepayYedBean {
    @BeanMapKey("RpymtAppSrlNo")
    @JsonProperty("RpymtAppSrlNo")
    @NonNull
    @NotEmpty
    @Length(max = 50)
    private String RpymtAppSrlNo;	//还款申请流水号

    @BeanMapKey("LoanDbllNo")
    @JsonProperty("LoanDbllNo")
    @NonNull
    @NotEmpty
    @Length(max = 30)
    private String LoanDbllNo;	//借据号

    @BeanMapKey("RpymtDt")
    @JsonProperty("RpymtDt")
    @NonNull
    @NotEmpty
    @Length(max = 10)
    private String RpymtDt;	//还款日期

    @BeanMapKey("RpymtTp")
    @JsonProperty("RpymtTp")
    @NonNull
    @NotEmpty
    @Length(max = 7)
    @DicType(dicType = SetlType.class, method = "getType")
    private String RpymtTp;	//还款类型

    @BeanMapKey("RpymtAmt")
    @JsonProperty("RpymtAmt")
    @NonNull
    @NotEmpty
    @Digits(integer = 16,fraction = 2,message = "RpyAmt 数字校验异常")
    private String RpymtAmt;	//还款金额

    @BeanMapKey("RpymtPnp")
    @JsonProperty("RpymtPnp")
    @NonNull
    @NotEmpty
    @NumType
    @Digits(integer = 16,fraction = 2,message = "RpyPrin 数字校验异常")
    private String RpymtPnp;	//还款本金

    @BeanMapKey("RpymtTrmCnt")
    @JsonProperty("RpymtTrmCnt")
    @NumType
    @Length(max = 10)
    private String RpymtTrmCnt;	//总还款期数（提前按期次还款时必输）

    @BeanMapKey("RpymtRsn")
    @JsonProperty("RpymtRsn")
    @Length(max = 300)
    private String RpymtRsn;	//还款原因

    @BeanMapKey("IdentTp")
    @JsonProperty("IdentTp")
    @NonNull
    @NotEmpty
    @Length(max = 5)
    @DicType(dicType = SDicCertTypeEnum.class, method = "getValue")
    private String IdentTp;	//证件类型

    @BeanMapKey("IdentNo")
    @JsonProperty("IdentNo")
    @NonNull
    @NotEmpty
    @Length(max = 32)
    private String IdentNo;	//证件号码

    @BeanMapKey("PdNo")
    @JsonProperty("PdNo")
    @NonNull
    @NotEmpty
    @Length(max = 11)
    private String PdNo;	//产品编号

    @BeanMapKey("CustNm")
    @JsonProperty("CustNm")
    @NonNull
    @NotEmpty
    @Length(max = 128)
    private String CustNm;	//客户姓名

    @BeanMapKey("RpymtChan")
    @JsonProperty("RpymtChan")
    @NonNull
    @NotEmpty
    @Length(max = 3)
    @DicType(dicType = SDicChannelType.class, method = "getValue")
    private String RpymtChan;	//渠道号

    @BeanMapKey("RpymtPlnMdfMd")
    @JsonProperty("RpymtPlnMdfMd")
    @Length(max = 1)
    private String RpymtPlnMdfMd;	//变更方式

    @BeanMapKey("RpyDtlInfArry")
    @JsonProperty("RpyDtlInfArry")
    @Valid
    private ReqIntSetYedBean[] RpyDtlInfArry;  //结算信息数组

    public String getRpymtAppSrlNo() {
        return RpymtAppSrlNo;
    }

    public void setRpymtAppSrlNo(String rpymtAppSrlNo) {
        RpymtAppSrlNo = rpymtAppSrlNo;
    }

    public String getLoanDbllNo() {
        return LoanDbllNo;
    }

    public void setLoanDbllNo(String loanDbllNo) {
        LoanDbllNo = loanDbllNo;
    }

    public String getRpymtDt() {
        return RpymtDt;
    }

    public void setRpymtDt(String rpymtDt) {
        RpymtDt = rpymtDt;
    }


    public String getRpymtTp() {
        return RpymtTp;
    }

    public void setRpymtTp(String rpymtTp) {
        RpymtTp = rpymtTp;
    }

    public String getRpymtAmt() {
        return RpymtAmt;
    }

    public void setRpymtAmt(String rpymtAmt) {
        RpymtAmt = rpymtAmt;
    }

    public String getRpymtPnp() {
        return RpymtPnp;
    }

    public void setRpymtPnp(String rpymtPnp) {
        RpymtPnp = rpymtPnp;
    }

    public String getRpymtTrmCnt() {
        return RpymtTrmCnt;
    }

    public void setRpymtTrmCnt(String rpymtTrmCnt) {
        RpymtTrmCnt = rpymtTrmCnt;
    }

    public String getRpymtRsn() {
        return RpymtRsn;
    }

    public void setRpymtRsn(String rpymtRsn) {
        RpymtRsn = rpymtRsn;
    }

    public String getIdentTp() {
        return IdentTp;
    }

    public void setIdentTp(String identTp) {
        IdentTp = identTp;
    }

    public String getIdentNo() {
        return IdentNo;
    }

    public void setIdentNo(String identNo) {
        IdentNo = identNo;
    }

    public String getPdNo() {
        return PdNo;
    }

    public void setPdNo(String pdNo) {
        PdNo = pdNo;
    }

    public String getCustNm() {
        return CustNm;
    }

    public void setCustNm(String custNm) {
        CustNm = custNm;
    }

    public String getRpymtChan() {
        return RpymtChan;
    }

    public void setRpymtChan(String rpymtChan) {
        RpymtChan = rpymtChan;
    }

    public String getRpymtPlnMdfMd() {
        return RpymtPlnMdfMd;
    }

    public void setRpymtPlnMdfMd(String rpymtPlnMdfMd) {
        RpymtPlnMdfMd = rpymtPlnMdfMd;
    }

    public ReqIntSetYedBean[] getRpyDtlInfArry() {
        return RpyDtlInfArry;
    }

    public void setRpyDtlInfArry(ReqIntSetYedBean[] rpyDtlInfArry) {
        RpyDtlInfArry = rpyDtlInfArry;
    }
}
